1
Di Luar Kertas
IA008Kuliah 2
00:07

Menghubungkan kesenjangan antara membaca karya akademik secara pasif dan mencapai penguasaan teknik sejati membutuhkan pemahaman mendalam terhadap bagian matematis inti dari Transformer. Transisi dari pemahaman teoretis ke implementasi adalah satu-satunya cara untuk mengungkap misteri 'kerapatan yang melekat' dalam ruang laten berdimensi tinggi.

1. Alasan Matematis untuk Pengskalaan

Mekanisme utama dari LLM modern adalah Perhatian Produk Titik yang Dikalibrasi. Detail teknik penting yang sering diabaikan dalam teori adalah Aturan Pengskalaan:

  • Skor perhatian mentah harus dibagi dengan akar kuadrat ukuran dimensi kunci (dk).
  • Alasannya: Ini mencegah hasil kali titik menjadi terlalu besar, yang akan mendorong fungsi softmax ke daerah dengan gradien tak hingga kecil, secara efektif 'membunuh' kemampuan model untuk belajar selama proses backpropagation.

2. Dari Teori ke Operasi Tensor

Pemahaman teknik melibatkan perpindahan dari lingkaran konseptual ke perkalian matriks yang sangat paralel.

  • Injeksi Urutan: Berbeda dengan RNN, Transformer tidak memiliki rasa urutan secara bawaan. Insinyur harus menulis kode fungsi sinus dan cosinus secara manual (Enkoding Posisional) untuk menyisipkan data urutan.
  • Mekanisme Stabilitas: Implementasi membutuhkan penggunaan strategis Hubungan Residu dan Normalisasi Layer (LayerNorm) untuk mengatasi pergeseran kovarian internal dan memastikan proses pelatihan tetap stabil.
Wawasan Teknik
Penguasaan sejati ditemukan dalam implementasi "baris demi baris". Mengandalkan literatur akademik semata sering mengarah pada kesalahpahaman tentang stabilitas gradien dan efisiensi komputasi.
Implementasi Python (PyTorch)
1
import torch
2
import torch.nn sebagainn
3
importmath
4
5
def scaled_dot_product_attention(query, key, value):
6
# Hitung d_k (dimensi kunci)
7
d_k = query.size(-1)
8
9
# Hitung skor perhatian mentah
10
# Berpindah dari loop sederhana ke perkalian matriks
11
skor = torch.matmul(query, key.transpose(-2, -1))
12
13
# Terapkan Aturan Pengskalaan untuk mencegah gradien tak hingga kecil
14
skor_terkalibrasi = skor / math.sqrt(d_k)
15
16
# Terapkan Softmax untuk mendapatkan bobot perhatian
17
bobot_perhatian = torch.softmax(scaled_scores, dim=-1)
18
19
# Output adalah jumlah terbobot dari nilai-nilai
20
kembali torch.matmul(bobot_perhatian, nilai)